package com.example.stmp.excel;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import lombok.Data;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;

import java.util.LinkedList;
import java.util.List;

/**
 * 读取Excel数据的监听器
 * @param <T>
 */
@Getter
@Slf4j
@Data
public class ExcelListener<T> implements ReadListener<T> {
    // 缓存的数据列表
    private List<T> cachedDataList = new LinkedList<>();

    /**
     * 每一条数据解析都会来调用
     * @param data
     * @param analysisContext
     */
    @Override
    public void invoke(T data, AnalysisContext analysisContext) {
        try {
            cachedDataList.add(data);
            log.info("ExcelListener解析到一条数据:{}", data);
        } catch (Exception e) {
            log.error("cachedDataList添加数据异常:{}", data);
        }
    }

    /**
     * 所有数据解析完成了 都会来调用
     * @param analysisContext
     */
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        log.info("Excel解析完成");
    }
}